Method and access device for generating IP broadband video service bill

ABSTRACT

Embodiments of the present invention disclose a method and an access device for generating an Internet Protocol (IP) broadband video service bill, the method includes: returning, by an access device, authorization information indicating whether the user is allowed to watch or preview based on watching or previewing right of the user when a user demands a program, recording the joining time point of the user, and sending received multicast stream to a port of the user; recording, by the access device, leaving time point of the user when the user stops watching or previewing the program demanded; sending, by the access device, original bill of the user to a video service support system; wherein the original bill includes the program demanded by the user, joining time point and leaving time point; processing, by the video service support system, the original bill to get much statistic data such as a real-time bill and audience rating.

This application is a continuation of International Patent Application No. PCT/CN2006/000309, filed Mar. 2, 2006, which claims priority to Chinese Patent Application No. 200510033804.2, filed Mar. 22, 2005, both of which are hereby incorporated by reference.

FIELD OF THE TECHNOLOGY

The present invention relates to Internet Protocol (IP) broadband video technologies, and more particularly, to a method and an access device for generating an IP broadband video service bill.

BACKGROUND OF THE INVENTION

Generally speaking, there are three modes for information transmission in an Ethernet including unicast, broadcast and multicast. The unicast mode is mainly used for the information transmission between two devices of a network, and the data encapsulation of the unicast mode is performed using IP address in any one of class A, B and C. The broadcast mode is used for the information transmission from one device to all the other devices in a network. During a broadcast, all digits in the part of host address in the destination IP address carried in the data packet are set as 1. The multicast mode is used for the information transmission from one device to multiple designated devices in a network, and the multicast data packet is encapsulated using IP address in class D.

The multicast technology has achieved a high effective point-to-multipoint data transmission in a network, which can effectively save network bandwidth and reduce network load, and thus the multicast technology is the optimum multipoint communication technology. The multicast technology has been widely used in multipoint communication service fields such as Web Television (TV), tele-education, real-time transmission of finance information, multimedia conference, game and emulation. A controllable multicast requires an access device to be served as a multicast service control point which is able to achieve a controllable access of video program, and may configure multicast right of each user, e.g., whether a user is allowed to receive a multicast program, which program a user is allowed to receive, program number that a user is allowed to receive simultaneously. The multicast right must be configured in a real time manner through a command line or a network management interface. FIG. 1 is a principle block diagram for performing controllable multicast video services in an IP Metropolitan Area Network (MAN). As shown in FIG. 1, after a user demands a video service, his right information will be generated by a video service support system/user management system and delivered to an access device. The access device guarantees that the configuration is instantly effective. The video service support system in FIG. 1 includes a head-end system, a user management, a program management, a right management, a playbill management and a charging management.

In the multicast technology, how to charge each user is a problem necessarily to be solved. There are two solutions for the problem in the prior art.

1. A first solution is a monthly fee mode.

In this solution, a terminal device of IP multicast such as a Set Top Box (STB) or a computer may join or quit a multicast group at any place in any time. The multicast router or multicast Layer 3 switch only needs to learn whether there is a terminal device of a physical sub-network belonging to a multicast group instead of saving the member relationship between terminal devices.

FIG. 2 is a principle diagram illustrating a system adopting monthly fee mode in the prior art. As shown in FIG. 2, when a user demands a program, an STB or a computer delivers a packet for joining a multicast group, and then an access device sends a request for joining the multicast group to an upper layer router or a program source of the Asynchronous Transfer Mode (ATM)/IP network. After joining the multicast group, the program source issues a video stream to the access device, and then the STB or computer will receive the video stream issued by the access device.

Since the access device is only able to learn whether a user is existed in a port, the access device is unable to learn how many users are existed in a port, not to mention to learn which user is online. It is impossible for the access device to learn when a specific user begins on line, when the user becomes off line, and which program the user has demanded. Moreover, it is impossible for the access device to generate an on-demand bill for a specific user. That is to say, in such a case, there is no record for a user demanding a program, and the charging of the access device may only use the monthly fee mode. The drawbacks of this solution are as follows.

(1) Lacking a valid user management mechanism: a user may join a multicast group and leave the group randomly. The multicast source is unable to learn when the user joins and quits. And there is a lack of a valid measure to control the transmission direction and range of the multicast information in the network.

(2) Lacking a valid charging measure: since the multicast protocol has no relationship with the charging, the multicast source is unable to learn when a user joins or quits and cannot calculate how many users are watching a multicast program within a time period, it is impossible to perform an exact charging.

(3) In the monthly fee mode, a user is able to demand programs randomly as long as he has paid the monthly fee, which seems to be very economical. In fact, only the users who are often on-line feel it is really economical. For the users who are seldom on-line, the monthly fee mode is uneconomical. Since a common user occupies little network resources in the aspect of network traffic and occupying time and is charged with no difference. The passion of such a common user will be affected, so that some potential users will flinch.

(4) The monthly fee mode may also lead to another psychology, i.e. some users consider “nonuse is uneconomical” because the monthly fee has been paid, so that they may watch many programs, even some programs they don't like, which leads to the waste of network resources and the network congestion, the impact the monthly fee mode is severer especially in the on-line rush hour phase, thereby restricting the profit and scale development of merchant finally.

(5) The simple monthly fee mode is a very non-flexible charging mechanism, which will lose many users. With the simple charging mechanism, the profits achieved by the network operator are very small while more resources and profits are lost.

2. A second solution is charging based on demanding times.

In this solution, the STB/computer performs interaction with a video server (video source) through a web page. The video server issues an Electronic Program Guide (EPG) to the STB/computer, a user selects the program he wants to watch using a remote control. The charging system performs the charging based on the time the user demands a program.

In this solution, the charging is performed based on times for clicking a program. It is impossible to learn the on-demand duration. Since it is impossible to perform the charging based on the on-demand duration, the charging thereof is very unreasonable. Moreover, under the circumstances that network resources are very scarce, if a user is frequently off line, it is necessary for the user to click multiple times to watch one program, thus it is unreasonable to perform the charging based on the demanding times. The single and non-flexible charging mode leads to negative influence for the development of service.

As can be seen from the existing solutions, the existing monthly fee mode and the demanding times based charging mode lead to negative influence for the development of service, because there are a lack of a valid user management mechanism and charging modes of the monthly fee mode and the demanding times based charging mode are single.

SUMMARY OF THE INVENTION

Embodiments of the present invention provide a method for generating an Internet Protocol (IP) broadband video service bill, applicable to a charging system at least including a user terminal, an access device and a video server support system, the method including:

sending, by a user terminal, a request for demanding a program;

checking, by the access device, whether a user corresponding to the user terminal has right to demand the program upon receiving the request for demanding the program from the user terminal;

if the user has right to demand the program, recording, by the access device, time points for the user joining and leaving the program on demand in original bill; sending, by the access device, the original bill to a video service support system; generating, by the video service support system, a practical bill of the user based on preset fee information of program on demand and the original bill received;

if the user has no right to demand the program, terminating the procedure.

An access device for generating an Internet Protocol (IP) broadband video service bill, including:

a first receiving module, configured to receive a request for demanding a program from a user terminal;

a first judging module, configured to determine whether a user has right to demand the program after the receiving module receives the request for demanding a program;

a recording module, configured to record time points for the user joining and leaving the program on demand in original bill after the judging module determines that the user has right to demand the program;

a first sending module, configured to send the original bill to a video service support system.

With the above solutions disclosed by embodiments of the present invention, the access device may generate and report the original bill to the video service support system. The original bill may include the information such as the program demanded by the user, joining time point and leaving time point. After receiving the original bill from the access device, the video service support system processes the original bill with the program on demand, charging rate and user parameters to obtain a real-time bill and save the real-time bill in the database, so as to provide a valid user management mechanism for the charging. The advantages of the method provided by embodiments of the present invention are as follows. (1) Performing a charging based on the user on-demand duration. (2) Performing a charging based on a specific user. The demanding right of users are different, and the charging thereof are also different. (3) Performing a charging based on a specific program. The charging standards are different for different programs. Besides, some programs may be charged while others are free. Furthermore, many functions such as audience rating may be achieved as well.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a principle diagram illustrating a system for performing controllable multicast video services in an IP MAN.

FIG. 2 is a principle diagram illustrating a system adopting monthly fee mode in the related art.

FIG. 3 is a principle diagram illustrating a system for performing a charging method in accordance with an embodiment of the present invention.

FIG. 4 is a service flowchart for performing a multicast charging in accordance with an embodiment of the present invention.

FIG. 5 is a flowchart for a user authentication in accordance with a preferred embodiment of the present invention.

EMBODIMENTS OF THE INVENTION

In the embodiments of the present invention, start time point is recorded when a user starts demanding or previewing a program. Offline time point and the program on demand are recorded when the user is off line, so that a bill record is generated. A bill may be generated based on the bill record to charge the user.

FIG. 3 is a principle diagram illustrating a system for performing a charging method in accordance with an embodiment of the present invention. As shown in FIG. 3, a bill is generated in the information interaction between an access device and a video service support system based on original bill as well as program on-demand fee bills preset in the existing video service support system, such as the program on demand, charging rate and user parameters. In an embodiment of the present invention, the service flow of multicast charging is shown in FIG. 4. FIG. 4 is a service flowchart for performing a multicast charging in accordance with an embodiment of the present invention. Each block of the flow is hereinafter described. It should be noted that, all blocks are not necessary to be performed in turn during practical execution.

Block 11: the video service support system issues a real-time generated EPG to a terminal device of each user, e.g., STB/computer, through the access device.

The EPG may be displayed on the screen of TV/computer in a real time manner. A user may use a remote control to demand a program based on the EPG. This block is common knowledge to those skilled in the art, which will not be further described herein.

Block 12: after a user, e.g., User A, demands a program, e.g., Program B, the STB of User A will generate an Internet Group Management Protocol Join (IGMP Join) packet, and send it to the access device.

The information carried in the IGMP Join packet includes the Media Access Control (MAC) address and IP address of the STB, the IP address of Program B requested to be watched, the multicast group joined by User A, etc.

For avoiding the exception caused by packet loss, the IGMP Join packet is generally sent two times.

Block 13: after receiving the IGMP Join packet sent by User A, the access device checks the right of User A. The detailed checking blocks will be hereinafter described with regards to FIG. 5. If User A has right to demand Program B, initiating a timer for User A and proceeding to block 14. Otherwise, terminating the procedure.

For example, in which User A has the on-demand right to receive multicast and to preview Program B instead of having right to watch Program B, if User A has not attained a preset intraday maximum preview time, the access device sets the on-demand state of User A as preview, adds 1 to the intraday preview times of User A, and initiates a previewing timer for User A. The on-demand state may be set through a state machine, which is well known to those skilled in the related art and not further described herein.

Moreover, served as an IGMP agent, the access device will check whether a member has joined the program group including Program B. If User A is the first member joining the program group, it is necessary for the access device to send the received IGMP Join packet to the upper layer multicast router of the ATM/IP network.

Block 14: the access device records the joining time point of User A. If User A is the first member joining the program group, proceed to Block 15. Otherwise, proceed to Block 16.

Block 15: if the access device has sent the received IGMP Join packet to the upper layer multicast router, the upper layer multicast router will send a multicast stream of Program B to the access device after receiving the IGMP Join packet from the access device. The access device will route the multicast stream of Program B to a port of User A after receiving the multicast stream.

The multicast router may need to exchange multicast routing information with an upper layer device by means of Protocol Independent Multicast (PIM)/IGMP protocol. It should be noted that, since there may be multiple routers between the program source and the users, the upper layer device mentioned above refers to the routers between the multicast router and the program source. If there are not other routers between the multicast router and the program source, the upper layer device mentioned above refers to the program source.

Block 16: when the timer of User A is overtime, the access device will delete the port of User A from the program group including Program B. The access device will cease forwarding the multicast stream of Program B to the port of User A, set the on-demand state of User A as offline, and record the leaving time point of User A.

Block 17: the access device sends to the video service support system the original bill including joining time point, leaving time point, on-demand state such as watching or previewing and program demanded by User A. The video service support system processes the received original bill with the program on-demand fee bills such as program, charging rate and user parameters, so as to obtain a real-time bill and save it in the database.

Block 18: when there is no user watching programs in the program group including Program B, the access device will send an IGMP Leave packet to the multicast router to request the multicast router not to forward the multicast stream of Program B any more. The information carried in the IGMP Leave packet includes the MAC address and IP address of the access device, and the IP address of the program to be deleted. The multicast router stops forwarding the data of Program B to the access device after receiving the IGMP Leave packet.

The previewing procedure has been described hereinabove. The watching procedure will be processed similarly to the previewing procedure. If User A has on-demand right to watch Program B, the access device will return to User A authorization information allowing User A to watch Program B, and record the joining time point and the on-demand state, i.e. watching, of User A. Then the access device will check whether Program B demanded by User A has been demanded by other users. If User A is the first user demanding Program B, the access device will send an IGMP Join packet to the upper layer multicast router. The upper layer multicast router will send the multicast stream of Program B to the access device after receiving the IGMP Join packet from the access device. The access device multicasts the received multicast stream to the port of User A. If other users have already demanded Program B, the access device will directly multicast the received multicast stream to the port of User A at the beginning.

When User A stops watching the program on demand, the access device will record the leaving time point of User A, and further check whether there are other users demanding the program. If there is no other user demanding the program, the access device will send an IGMP Leave packet to the multicast router. After receiving the IGMP Leave packet, the upper layer multicast router will stop sending the multicast stream of the program to the access device. And at the same time the access device stops sending the multicast stream to the port of User A. If there are still other users demanding the program, the access device will directly stop multicasting the received multicast stream to the port of User A.

At last, the access device sends the original bill of User A to the video service support system. The video service support system processes the original bill with the program on-demand fee bills such as program, charging rate and user parameters to obtain a real-time bill and save it in the database, so as to provide a valid user management mechanism for the charging.

In an embodiment of the present invention, the right of user is checked using the blocks shown in FIG. 5. FIG. 5 is a flowchart illustrating user authentication in accordance with an embodiment of the present invention. Each block of the flow will be hereinafter described respectively.

Block 21: the right of user regulates the maximum program number that can be watched by the user simultaneously, i.e. the maximum video channel number of a user. After receiving the authentication request from User A, the access device checks whether User A has an idle video channel to hold a new program. If User A has no idle video channel, the access device returns authentication failure information to User A, and terminates the procedure. Otherwise, proceed to block 22.

Block 22: the access device checks whether User A has been obstructed using record state in the preset user table for storing user registration information. If User A has been obstructed, which means the authentication is failed, the authentication result returned to User A is non-authentication, and the procedure is terminated. Otherwise, proceed to block 23.

The user table stores the user registration information, type of program that the user has right to demand, type of program that the user has no right to demand, program which the user not only has right to demand but also has right to watch, and program which the user has right to demand and preview instead of having right to watch.

The obstruction in the block refers to a user whose service has been stopped due to an unpaid bill.

Block 23: determine whether the user has right to watch the program on demand. If the user has right to watch the program on demand, proceed to block 24. Otherwise, proceed to block 25.

The access device searches a right template adopted by the user in the user table, and matches the user's right based on the right template of the user and the multicast IP of the program on demand. A user may bind one or more templates. The on-demand right of a user is watching or previewing some programs, which is determined by the bound templates of the user. If multiple templates are bound with a user, the user has all the on-demand right regulated by each template.

Block 24: if the user has right to watch the program on demand, the access device returns the authorization information indicating that the user is allowed to watch the program.

Block 25: if the user has no right to watch the program on demand, the access device further checks whether the user has right to preview the program on demand. Similar to the watching right, with regards to previewing, the right template also defines whether a specific user has right to preview each program. If the user has no right to preview the program, the access device returns the authentication failure information, and terminates the procedure.

Block 26: if the user has right to preview the program, a user parameter table defines the intraday maximum number allowed to preview programs for all the video channels of the user, so as to prevent the user from previewing programs exceeding the allowed number. If the number indicating how many programs the user has previewed in one day exceeds the maximum number, the access device will return the authentication failure information. The user on-demand state table records the number of programs that the user has already previewed. The recorded number may be reset by the timer at regular intervals, for example twenty-four hours.

Block 27: if the number indicating how many programs the user has previewed in one day does not exceed the maximum preview number, the access device returns the authentication information indicating that the user is allowed to preview the program.

During practical implementations, each program has its attributes including free or not, charging rate standard and applicable to which kinds of people. It is possible to construct a template applicable to a user based on different identification (ID)s, ages and favors of the user, and to bind the same template with the similar users. The generated bill may be sent to an information service center for saving and charging computation through a specific protocol. At the same time, it is possible to obtain other required statistic data such as audience rating of a specific program and on-demand rate of each time period based on such original data. The information service center herein may be included in the video service support system.

Different payment modes may be adopted after obtaining the bill of a user. (1) The payment modes may be divided into the following categories based on the payment time, e.g., pre-paid charging, post-payment, which may also support rechargeable charging mode. (2) The payment modes may be divided into following categorizes based on different discounts, e.g., time based discount, traffic based discount, time & traffic based discount. In the time based discount charging mode, the payment modes may be divided into per day based discount, per week based discount, per month based discount, per year based discount and discount in certain day. In the traffic based discount charging mode, different discounts may be provided based on different accumulated traffic. The time based discount and traffic based discount may be supported simultaneously. (3) Different charging rates may be provided based on different bandwidths. A user may select bandwidth of different grades when demanding a program. The charging system may provide different charging rates based on the bandwidth of different grades adopted by a user. Practically, the above charging modes may be flexibly combined based on user's requirements, so as to provide various charging package solutions for users.

If a user is charged based on the duration he/she watches the program on demand, the accumulated fee becomes higher as the duration becomes longer, which is independent of the traffic. The user may enjoy different discounts during different time periods, which are referred to as time period based discount. For example, the discount may be given on weekends, holiday and night. If the discount time periods are overlapped, e.g., at the night of holiday, the lowest discount may be given. Besides, a user may enjoy the accumulated discount while enjoying the time period based discount. The accumulated discount refers to that, during certain accumulated period, the discount will be lower along with the accumulated duration becomes longer, so as to encourage the consumption. If the time period based discount and the accumulated discount take effect simultaneously, the practical discount is the multiplication result of the two discounts. A user may also select a program bandwidth dynamically, and the programs with different bandwidths correspond to different charging rates.

If a user is charged based on traffic, the accumulated fee becomes higher as the used traffic becomes larger, which is independent of the duration. The traffic based charging mode is the mainstream of broadband service charging. A user may enjoy different discounts in different time periods, and at the same time may enjoy the accumulated discount. The accumulated discount herein refers to that, during certain accumulated period, the discount becomes lower as the accumulated traffic becomes larger. If the time based discount and the accumulated discount take effect simultaneously, the practical discount is the multiplication result of the two discounts. A user may also select a program bandwidth dynamically, and the programs with different bandwidths correspond to different charging rates.

With the above user bills, the charging may be performed based on actions of a user including watching and previewing, and the previewing may be free.

The audience rating statistics of various programs may be performed by using the above user bills. The audience rating statistic means to calculate how many users are watching a program at a specific time. When a user joins a program, adding one to the online user number of the program. When a user quits the program, subtract 1 from the online user number of the program. Such that the online user number of a program records the number of users watching the program in a real time manner. The video service support system may obtain the online user number of a program from a host periodically, and paint the audience rating curve of each program at each intraday time period.

By using the above user bills, it is possible to calculate the audience rating of each program based on the on-demand statistics of each program at each time period as well as to which people the program being applicable, so as to provide a more detailed bill to the operator and provide a basis for further decisions. It is possible to construct a personalized right template based on the audience rating, so as to provide a personalized audience right to users and attract more users.

By using the above user bills, it is possible to achieve the service value-added capability, so as to provide an effective value-added to the network and improve the income of network operation, which is helpful to the positive cycle of network operation and network scale, and provides a powerful guarantee for improving the competitive capability of network operator. 

The invention claimed is:
 1. A method for generating an Internet Protocol (IP) broadband video service bill, comprising: receiving, by an access device locating between a user terminal and a multicast router, a request for demanding a program from the user terminal; checking, by the access device, whether a user corresponding to the user terminal has a right to demand the program upon receiving the request for demanding the program from the user terminal; if the user has the right to demand the program, checking, by the access device, whether there is a user in a program group comprising the program on demand; if the user is first member joining the program group, sending, by the access device, the request for demanding the program to the multicast router and receiving, by the access device, the multicast stream of the program on demand from the multicast router; then recording, by the access device, a time for the user joining the program on demand while sending, by the access device, the multicast stream of the program on demand received from the multicast router to the user terminal; if the user is not first member joining the program group, recording, by the access device, a time for the user joining the program on demand while sending, by the access device, the multicast stream of the program on demand to the user terminal; recording, by the access device, a time for the user leaving the program on demand while stopping sending, by the access device, the multicast stream of the program on demand to the user terminal when the user stops watching the program on demand; and sending, by the access device, an original bill including the times for the user joining and leaving the program on demand to a video service support system so that a practical bill of the user can be generated by the video service support system based on preset fee information of the program on demand and the original bill received.
 2. The method of claim 1, wherein the user has a right to preview the program on demand, and the method further comprises: setting, by the access device, an initiating timer for the user before sending the multicast stream of the program on demand to the user terminal; and recording, by the access device, the time for the user leaving the program on demand while stopping sending, by the access device, the multicast stream of the program on demand to the user terminal if the initiating timer is overtime before the user stops watching the program on demand.
 3. The method of claim 1, further comprising: requesting, by the access device, the multicast router to leave the program group if there is no user watching a program in the program group comprising the program on demand; stopping sending, by the multicast router, the multicast stream of the program on demand to the access device; and stopping sending, by the access device, the multicast stream of the program on demand to a port of the user terminal.
 4. The method of claim 1, further comprising: setting a maximum program number indicating how many programs the user may watch simultaneously; and the checking by the access device whether the user has the right to demand the program comprises: checking, by the access device, whether a program number indicating how many programs the user have demanded reaches the maximum program number; if the program number reaches the maximum program number, determining that the user has no right to demand the program, and terminating the procedure; if the program number fails to reach the maximum program number, checking, by the access device, whether the user has been obstructed based on a preset user table for storing user registration information; if the user has been obstructed, determining that the user has no right to demand the program, and terminating the procedure; if the user hasn't been obstructed, checking, by the access device, whether the user has a right to watch the program on demand based on a right template in the preset user table; if the user has the right to watch the program on demand, returning authorization information indicating that the user has the right to demand the program.
 5. The method of claim 4, further comprising: setting, by the access device, an on-demand state of the user as watching, and recording the on-demand state.
 6. The method of claim 4, wherein the process of checking by the access device whether the user has right to watch the program on demand based on the right template in the preset user table comprises: if the user has no right to watch the program on demand, checking, by the access device, whether the user has a right to preview the program on demand based on the right template; if the user has the right to preview the program on demand, returning to the user terminal the authorization information indicating that the user is allowed to preview the program on demand; if the user has no right to preview the program on demand, determining that the user has no right to demand the program.
 7. The method of claim 6, further comprising: presetting an intraday maximum preview number for the user; before the process of returning to the user terminal the authorization information indicating that the user is allowed to preview the program on demand, the method further comprising: checking, by the access device, whether preview times of the user have exceeded the intraday maximum preview number; if the preview times have exceeded the intraday maximum preview number, determining that the user has no fight to demand the program; if the preview times haven't exceeded the intraday maximum preview number, checking by the access device whether the user has the right to preview the program on demand based on the right template.
 8. The method of claim 7, further comprising: setting, by the access device, the on-demand state of the user as previewing, adding 1 to the preview times, and recording, by the access device, the on-demand state.
 9. The method of claim 6, further comprising: setting, by the access device, the on-demand state of the user as previewing, adding 1 to the preview times, and recording, by the access device, the on-demand state.
 10. The method of claim 1, wherein before the process of receiving, by an access device locating between a user terminal and a multicast router, a request for demanding a program from the user terminal, comprises: generating, by the user terminal, an Internet Group Management Protocol Join (IGMP Join) packet based on the user's demand, and sending, by the user terminal, the IGMP Join packet to the access device.
 11. The method of claim 10, wherein information carried in the IGMP Join packet comprises: Media Access Control (MAC) address and IP address of the user terminal, IP address of the program on demand, and a multicast group in which the user terminal requests to join.
 12. The method of claim 1, wherein the stopping sending by the access device the multicast stream of the program on demand to the user terminal comprises: sending, by the access device, an IGMP Leave packet to the multicast router; stopping forwarding, by the multicast router, data of the program on demand to the access device after receiving the IGMP Leave packet.
 13. The method of claim 12, wherein information carried in the IGMP Leave packet comprises: the MAC address as well as IP address of the access device, and IP address of the program which the user terminal requests to delete.
 14. The method of claim 1, wherein the user terminal comprises one of a Set-Top Box (STB) and a computer. 